﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using SouthApps.MobileHealth.SDK.DAL.Model;

namespace SouthApps.MobileHealth.SDK.DAL.DataAccess
{
    public class FinanciadorDao : DataAccessObject
    {
        #region Get
        
        public Financiador GetFinanciador(int financiadorId)
        {
            try
            {
                using (var entities = this.EntityContext)
                {
                    return entities.financiador.Include("Pais").FirstOrDefault(e =>
                        e.financiadorId == financiadorId);
                }
            }
            catch (Exception ex)
            {
                throw this.HandleException(ex);
            }
        }

        public List<Financiador> GetFinanciadores()
        {
            return this.GetFinanciadores(true);
        }

        public List<Financiador> GetFinanciadores(bool activo)
        {
            try
            {
                using (var entities = this.EntityContext)
                {
                    var query = from e in entities.financiador
                                where e.activo == activo
                                select e;

                    return query.ToList();
                }
            }
            catch (Exception ex)
            {
                throw this.HandleException(ex);
            }
        }

        #endregion

        #region Add

        public void AddFinanciador(Financiador financiador)
        {
            try
            {
                using (var entities = this.EntityContext)
                {
                    entities.AddTofinanciador(financiador);
                    this.SaveChanges(entities);
                }
            }
            catch (Exception ex)
            {
                throw this.HandleException(ex);
            }
        }

        #endregion

        #region Modify

        public void ModifyFinanciador(Financiador financiador)
        {
            try
            {
                using (var entities = this.EntityContext)
                {
                    Financiador oldFinanciador = entities.financiador.FirstOrDefault(e => e.financiadorId == financiador.financiadorId);
                    oldFinanciador = financiador;

                    this.SaveChanges(entities);
                }
            }
            catch (Exception ex)
            {
                throw this.HandleException(ex);
            }
        }

        #endregion
    }
}
